package com.wgy.day36常见的函数式接口.Function接口;

import java.util.function.Function;

/*
Function接口中的默认方法andThen:用来进行组合操作
需求:把String类型的"123",转换为Integer类型,把转换后的结果+10
    把增加之后的Integer类型的数据,转换成String类型
分析:转换了2次
    第一次把String->Integer
    所以使用Function<String,Integer> fun1
    Integer i=fun1.apply("123")+10;
    第二次把Integer->String
    所以使用Function<Integer,String> fun2
    String s=fun2.apply(i);

    我们可以使用andThen方法,把两次转换组合在一起使用
    String s=fun1.andThen(fun2).apply("123")
    fun1先调用apply方法,把String转换为Integer
    fun2再调用apply方法,把Integer转换为String

*/
public class Demo02FunctionAndThen {
   /*定义一个方法
    方法的参数传递一个字符串类型的整数
    方法的参数传递一个Function接口,泛型使用<String,Integer>
    方法的参数传递一个Function接口,泛型使用<Integer,String>
    */
    public static void change(String s, Function<String,Integer>fun1,Function<Integer,String> fun2){
        String s1 = fun1.andThen(fun2).apply(s);
        System.out.println(s1);
    }

    public static void main(String[] args) {
        String s="123";
        change(s,
                (String str)->{return Integer.parseInt(str)+10;},
                (Integer in)->{return in+"";}
                );


    }
}
